package utilitaire;

import general.Fichiers;

public class Log {

	private static Boolean modeInformation = null;
	private static Boolean modeDebug = null;
	private static Boolean modeErreur = null;
	
	private static Fichiers fichier = null;
	
	
	public static void initialier() {
		initialier(System.getProperty("user.dir" )+"\\","logs.txt", true);
	}
	
	public static void initialier(boolean reInitialiser) {
		initialier(System.getProperty("user.dir" )+"\\","logs.txt", reInitialiser);
	}
	
	public static void initialier(String path) {
		initialier(path+"\\","logs.txt", true);
	}
	
	public static void initialier(String path, boolean reInitialiser) {
		initialier(path+"\\","logs.txt", reInitialiser);
	}
	
	
	public static void initialier(String path, String nomFichier, boolean reInitialiser) {
		fichier = new Fichiers(path, nomFichier, reInitialiser);
		String modeChoisi = "DEBUG";
		modeDebug = false;
		modeInformation = false;
		modeErreur = false;
		if(modeChoisi!= null && modeChoisi.equals("ERREUR")) {
			modeErreur = true;
		}
		else if(modeChoisi!= null && modeChoisi.equals("INFORMATION")) {
			modeInformation = true;
			modeErreur = true;
		}
		else if(modeChoisi!= null && modeChoisi.equals("DEBUG")) {
			modeDebug = true;
			modeInformation = true;
			modeErreur = true;
		} 
	}
	

	
	public static void debug(String message) {
		if(modeDebug) {
			afficher(message);
		}
	}

	public static void information(String message) {
		if(modeInformation) {
			afficher(message);
		}
	}
	
	public static void erreur(String message, Exception e) {
		if(modeErreur) {
			afficher("ERREUR : "+message+e.getMessage());
		}
	}

	private static void afficher(String message) {
		afficherConsole(message);
		afficherFichier(message);
	}
	
	private static void afficherConsole(String message) {
		System.out.println(message);
	}

	private static void afficherFichier(String message) {
		if(fichier!=null) {
			try {
				fichier.ecrirerFichier(message+"\r\n");
			} catch (Exception e) {
				afficherConsole("Impossible d'ecrire le log '"+message+"' dans : "+fichier.getFichier().getAbsolutePath());
			}
		}
	}

}
